package com.crm.service.activityManager;

import com.crm.model.entity.activityManager.CustomerProductActivity;
import com.crm.model.qo.activityManager.CustomerProductActivityQO;
import com.crm.model.vo.activityManager.CustomerProductActivityVO;

import java.util.Date;
import java.util.List;

/**
 * @author luojie
 * @date 2021/2/23 11:22
 */
public interface CustomerProductActivityDbService {

    /**
     * 活动管理--根据主键查询活动信息(活动查看/编辑)
     * @param activityId    ---活动主键
     * @return
     */
    CustomerProductActivity selectProductActivityByPrimaryKey(String activityId);

    /**
     * 活动管理--活动列表
     * @param customerProductActivityQO ---活动列表查询条件
     * @param orderStr                  ---活动列表排序
     * @author yincuimei
     * @return
     */
    List<CustomerProductActivityVO> selectCustomerProductActivityVOList(CustomerProductActivityQO customerProductActivityQO, String orderStr);

    /**
     * 活动管理--添加活动
     * @param customerProductActivity
     * @return
     */
    Boolean insertProductActivity(CustomerProductActivity customerProductActivity);

    /**
     * 活动管理--查询活动是否重复
     * @return
     */
    List<CustomerProductActivity> selectActivityIfRepeated(String productActivityName, Date activityPeriodValidityStart, Date activityPeriodValidityEnd);

    /**
     * 活动列表--(活动上架)根据活动ID及当前时间查询活动是否在有效期内
     * @param productActivityId ---活动ID
     * @param nowDate           ---当前时间
     * @author yincuimei
     * @return
     */
    Boolean selectActivityIsInValidityPeriod(String productActivityId,String nowDate);

    /**
     * 活动列表--活动上/下架操作
     * @param productActivityId    ---活动主键
     * @param activityShelfStatus  ---上下架状态(0:上架;1:下架)
     * @param accountId            ---当前操作人账号ID
     * @author yincuimei
     * @return
     */
    Boolean updateActivityShelfStatus(String productActivityId,String activityShelfStatus,String accountId);

    /**
     * 活动列表--根据主键修改活动
     * @return
     */
    Boolean updateProductActivityByPrimaryKey(CustomerProductActivity customerProductActivity);

    /**
     * 活动列表--修改时查询除自己之外有没有重复的活动
     * @param productActivityId
     * @param productActivityName
     * @param activityPeriodValidityStart
     * @param activityPeriodValidityEnd
     * @return
     */
    List<CustomerProductActivity> selectActivityIfRepeatedNotSelf(String productActivityId,String productActivityName, Date activityPeriodValidityStart, Date activityPeriodValidityEnd);

    /**
     * 查询有效的活动
     * @param searchInfo 查询条件
     * @return
     */
    List<CustomerProductActivity> selectValidityPeriodCustomerActivityList(String searchInfo);

    /***
     * @Description:任务管理-任务列表 查询近期活动列表
     * @Author: luojie
     * @Date: 2021/4/26 16:45
     */
    List<CustomerProductActivity> selectRecentActivityList();
}
